package openjdk.collections.map;

import java.util.*;

/**
 * 根据TreeMap的key值来进行排序的，但是有时我们需要根据TreeMap的value来进行排序。
 * 对value排序我们就需要借助于Collections的sort(List<T> list, Comparator<? super T> c)方法，
 * 该方法根据指定比较器产生的顺序对指定列表进行排序。
 * 但是有一个前提条件，那就是所有的元素都必须能够根据所提供的比较器来进行比较。如下：
 */
public class TreeMapDemo2 {
    public static void main(String[] args) {

        Map<String,String> map = new TreeMap<String,String>();

        map.put("c","x993kadsf");
        map.put("d","d993kadsf");
        map.put("a","z993kadsf");
        map.put("f","f993kadsf");
        map.put("b","b993kadsf");

        List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet());
        Collections.sort(list, new Comparator<Map.Entry<String, String>>() {
            @Override
            public int compare(Map.Entry<String, String> o1, Map.Entry<String, String> o2) {
                return o1.getValue().compareTo(o2.getValue());
            }
        });

        for (Map.Entry<String, String> mapping : list) {
            System.out.println(mapping.getKey() + " : " + mapping.getValue());
        }
    }
}
